package ntd.block.server.bo;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.Data;

/**
 * 交互应用 - http-msg-消息参数
 */
@Data
public class ComServerHttpMsgBo {

    private String body;

    private String form;

    private String param;

    /**
     * 获取参数 - 多路径
     * @param key
     * @return
     */
    public String getParamAboutAll(String key) {
        String res = getVal(this.param, key);
        if (StrUtil.isBlank(res)) {
            res = getVal(this.form, key);
        }
        if (StrUtil.isBlank(res)) {
            res = getVal(this.body, key);
        }
        return res;
    }

    /**
     * 获取全部参数 - 合并
     * @return
     */
    public JSONObject getMergeParams() {
        JSONObject jsonObject = JSONUtil.createObj();
        jsonObject.putAll(getObj(this.param));
        jsonObject.putAll(getObj(this.form));
        jsonObject.putAll(getObj(this.body));
        return jsonObject;
    }

    private String getVal(String json, String key) {
        if (JSONUtil.isTypeJSONObject(json)) {
            JSONObject jsonObject = JSONUtil.parseObj(json);
            return jsonObject.getStr(key);
        }
        return null;
    }

    private JSONObject getObj(String json) {
        if (StrUtil.isBlank(json)) {
            return JSONUtil.createObj();
        }
        if (JSONUtil.isTypeJSONObject(json)) {
            return JSONUtil.parseObj(json);
        }
        return null;
    }

}
